home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / apps / astronmy / strchart.arc / patch.arc / starargs.c < prev    next >
C/C++ Source or Header  |  1989-03-23  |  2KB  |  47 lines

  1. /*
  2. ** Written by Dave Yearke (dgy@sigmast), September 1988.
  3. ** Portions of this program (c) Mark Williams Company.
  4. */
  5.  
  6. #include <osbind.h> /* Needed for Cconws() and Crawcin() */
  7.  
  8. main()
  9. {
  10.      char *argptr, command[130], *eargv[20], *eenv[2];
  11.      int i;
  12.  
  13.      Cconws("STARARGS - Utility for running Starchart ");
  14.      Cconws("software from the desktop.\r\n");
  15.      Cconws("Portions of this program, copyright 1984, ");
  16.      Cconws("Mark Williams Company.");
  17.      for (;;) {
  18.           *command = 128; /* Number of characters Cconrs() should read */
  19.           Cursconf(1, 0); /* Show cursor */
  20.           Cconws("\r\n\nPlease enter the full name of the program to be run ");
  21.           Cconws("(e.g. starst.ttp)\r\n");
  22.           Cconws("and its arguments, or an empty line to quit:\r\n");
  23.           Cconrs(command); /* Read an edited string from standard input */
  24.           if (*(command + 1) == 0) /* Number of chars actually read */
  25.                exit();
  26.           Cconws("\r\n");
  27.           command[*(command + 1) + 2] = '\0'; /* Make sure it's terminated */
  28.           i = 0;
  29.           argptr = command + 2;
  30.           do {
  31.                eargv[i] = argptr;
  32.                while ((*++argptr != ' ') && (*argptr != '\0'))
  33.                     ; /* Browse until space or end of string */
  34.                if (*argptr == ' ') /* If we found a space */
  35.                     *argptr++ = '\0'; /* End the string preceding this point */
  36.                while ((*argptr == ' ') && (*argptr != '\0'))
  37.                     ++argptr; /* Browse until non-space or end of string */
  38.                Cconws(eargv[i++]);
  39.                Cconws(" ");
  40.           } while (*argptr != '\0');
  41.           eargv[i] = eenv[1] = 0;
  42.           eenv[0] = "PATH=."; /* The programs will think they're being run */
  43.           Cconws("\r\n");     /* from a shell. */
  44.           execve(eargv[0], eargv, eenv);
  45.      }
  46. }
  47.